# Python语言的继承语法是在定义的类名后加一个括号，在括号里指定待继承的父类名。
# 子类无法访问父类中的私有属性和方法
# 公有属性和方法：以普通的标识符命名
# 私有属性和方法：以双下划线开头
# 受保护的属性和方法：以单下划线开头


# coding=utf-8
class Emp:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    def work(self):
        print('Emp work')

    def addSalary(self, number):
        self.salary = self.salary + number

    def printInfo(self):
        print('name is:' + self.name + ' salary is:' + str(self.salary))


class PythonDeveloper(Emp):
    def work(self):
        print('develop python')

    def learnPython(self):
        print(self.name + ' learn Python.')


pythonDev = PythonDeveloper('Peter', 12000)
pythonDev.printInfo()  # name is:Peter salary is:12000
pythonDev.learnPython()  # Peter learn Python.
pythonDev.addSalary(5000)
pythonDev.printInfo()  # name is:Peter salary is:17000
pythonDev.work()  # develop python

# 除了公有和私有的属性和变量外，在类里还可以定义受保护的属性和方法。
# 受保护的属性名和方法名之前有一个下划线_，这些属性和方法只能在本类和子类里被使用

# Python语言支持多重继承，即一个子类可以同时继承多个父类，不过从项目实践角度来说多重继承会提升代码的维护成本，并很容易导致问题
